#ifndef BAS_BAS_VECTOR_PRIVATE_H
#define BAS_BAS_VECTOR_PRIVATE_H

#include <stdlib.h>
#include "bas/bas_container.h"

/**
 * 起始存储元素个数
 */
#define VECTOR_INIT_SIZE 10

/**
 * Vector动态数组
 */
typedef struct T_Vector_tag 
{
    T_IteratorCallBackTable *ptCallBackTable;   ///<迭代器回调函数表指针
    T_TypeInfo              tTypeInfo;          ///<类型信息
    void                    *pvStartPos;        ///<起始位置
    void                    *pvEndPos;          ///<结束位置
    void                    *pvEndPosOfStorage; ///<存贮边界
} T_Vector;

/**
 * @brief     调整当前Vector中元素的个数为nSize个
 * @param[in] ptVector        指向Vector的指针
 * @param[in] nSize           调整后Vector中元素的个数
 * @param[in] ptInitParameter 可变参数为初始化函数的参数
 * @see       basVectorResize
 * @note      1.可选参数列表必须以BAS_PARM_END结尾
 *            2.本函数为内部函数, 不应该直接调用本函数
 */
int _basVectorResize(T_Vector *ptVector, const size_t nSize, ...);

#endif
